$(function() {
    $(".win-homepage").click(function() {
	if (document.all) {
	    document.body.style.behavior = 'url(#default#homepage)';
	    document.body.setHomePage(document.URL);
	} else {
	    alert("设置首页失败，请手动设置！");
	}
    });
    $(".win-favorite").click(function() {
	var sURL = document.URL;
	var sTitle = document.title;
	try {
	    window.external.addFavorite(sURL, sTitle);
	} catch (e) {
	    try {
		window.sidebar.addPanel(sTitle, sURL, "");
	    } catch (e) {
		alert("加入收藏失败，请使用Ctrl+D进行添加");
	    }
	}
    });
    $(".win-forward").click(function() {
	window.history.forward(1);
    });
    $(".win-back").click(function() {
	window.history.back(-1);
    });
    $(".win-backtop").click(function() {
	$('body,html').animate({
	    scrollTop : 0
	}, 1000);
	return false;
    });
    $(".win-refresh").click(function() {
	window.location.reload();
    });
    $(".win-print").click(function() {
	window.print();
    });
    $(".win-close").click(function() {
	window.close();
    });
    $('.checkall').click(function() {
	var e = $(this);
	var name = e.attr("name");
	var checkfor = e.attr("checkfor");
	var type;
	if (checkfor != '' && checkfor != null && checkfor != undefined) {
	    type = e.closest('form').find("input[name='" + checkfor + "']");
	} else {
	    type = e.closest('form').find("input[type='checkbox']");
	}
	;
	if (name == "checkall") {
	    $(type).each(function(index, element) {
		element.checked = true;
	    });
	    e.attr("name", "ok");
	} else {
	    $(type).each(function(index, element) {
		element.checked = false;
	    });
	    e.attr("name", "checkall");
	}
    });
    $('.dropdown-toggle').click(function() {
	$(this).closest('.button-group, .drop').addClass("open");
    });
    $(document).bind("click", function(e) {
	if ($(e.target).closest(".button-group.open, .drop.open").length == 0) {
	    $(".button-group, .drop").removeClass("open");
	}
    });
    $checkplaceholder = function() {
	var input = document.createElement('input');
	return 'placeholder' in input;
    };
    if (!$checkplaceholder()) {
	$("textarea[placeholder], input[placeholder]").each(
		function(index, element) {
		    var content = false;
		    if ($(this).val().length === 0
			    || $(this).val() == $(this).attr("placeholder")) {
			content = true
		    }
		    ;
		    if (content) {
			$(element).val($(element).attr("placeholder"));
			$(element).css("color", "rgb(169,169,169)");
			$(element).data("pintuerholder",
				$(element).css("color"));
			$(element).focus(function() {
			    $hideplaceholder($(this));
			});
			$(element).blur(function() {
			    $showplaceholder($(this));
			});
		    }
		})
    }
    ;
    $showplaceholder = function(element) {
	if (($(element).val().length === 0 || $(element).val() == $(element)
		.attr("placeholder"))
		&& $(element).attr("type") != "password") {
	    $(element).val($(element).attr("placeholder"));
	    $(element).data("pintuerholder", $(element).css("color"));
	    $(element).css("color", "rgb(169,169,169)");
	}
    };
    var $hideplaceholder = function(element) {
	if ($(element).data("pintuerholder")) {
	    $(element).val("");
	    $(element).css("color", $(element).data("pintuerholder"));
	    $(element).removeData("pintuerholder");
	}
    };
    $('textarea, input, select')
	    .blur(
		    function() {
			var e = $(this);
			if (e.attr("data-validate")) {
			    e.closest('.field').find(".input-help").remove();
			    var $checkdata = e.attr("data-validate").split(',');
			    var $checkvalue = e.val();
			    var $checkstate = true;
			    var $checktext = "";
			    if (e.attr("placeholder") == $checkvalue) {
				$checkvalue = "";
			    }
			    if ($checkvalue != ""
				    || e.attr("data-validate").indexOf(
					    "required") >= 0) {
				for (var i = 0; i < $checkdata.length; i++) {
				    var $checktype = $checkdata[i].split(':');
				    if (!$pintuercheck(e, $checktype[0],
					    $checkvalue)) {
					$checkstate = false;
					$checktext = $checktext + "<li>"
						+ $checktype[1] + "</li>";
				    }
				}
			    }
			    ;
			    if ($checkstate) {
				e.closest('.form-group').removeClass(
					"check-error");
				e.parent().find(".input-help").remove();
				e.closest('.form-group').addClass(
					"check-success");
			    } else {
				e.closest('.form-group').removeClass(
					"check-success");
				e.closest('.form-group')
					.addClass("check-error");
				e.closest('.field').append(
					'<div class="input-help"><ul>'
						+ $checktext + '</ul></div>');
			    }
			}
		    });
    $pintuercheck = function(element, type, value) {
	$pintu = value.replace(/(^\s*)|(\s*$)/g, "");
	switch (type) {
	case "required":
	    return /[^(^\s*)|(\s*$)]/.test($pintu);
	    break;
	case "chinese":
	    return /^[\u0391-\uFFE5]+$/.test($pintu);
	    break;
	case "number":
	    return /^\d+$/.test($pintu);
	    break;
	case "integer":
	    return /^[-\+]?\d+$/.test($pintu);
	    break;
	case "plusinteger":
	    return /^[+]?\d+$/.test($pintu);
	    break;
	case "double":
	    return /^[-\+]?\d+(\.\d+)?$/.test($pintu);
	    break;
	case "plusdouble":
	    return /^[+]?\d+(\.\d+)?$/.test($pintu);
	    break;
	case "english":
	    return /^[A-Za-z]+$/.test($pintu);
	    break;
	case "username":
	    return /^[a-z]\w{3,}$/i.test($pintu);
	    break;
	case "mobile":
	    return /^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}?$|15[89]\d{8}?$|170\d{8}?$|147\d{8}?$/
		    .test($pintu);
	    break;
	case "phone":
	    return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/
		    .test($pintu);
	    break;
	case "tel":
	    return /^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}?$|15[89]\d{8}?$|170\d{8}?$|147\d{8}?$/
		    .test($pintu)
		    || /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/
			    .test($pintu);
	    break;
	case "email":
	    return /^[^@]+@[^@]+\.[^@]+$/.test($pintu);
	    break;
	case "url":
	    return /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/
		    .test($pintu);
	    break;
	case "ip":
	    return /^[\d\.]{7,15}$/.test($pintu);
	    break;
	case "qq":
	    return /^[1-9]\d{4,10}$/.test($pintu);
	    break;
	case "currency":
	    return /^\d+(\.\d+)?$/.test($pintu);
	    break;
	case "zip":
	    return /^[1-9]\d{5}$/.test($pintu);
	    break;
	case "radio":
	    var radio = element.closest('form').find(
		    'input[name="' + element.attr("name") + '"]:checked').length;
	    return eval(radio == 1);
	    break;
	default:
	    var $test = type.split('#');
	    if ($test.length > 1) {
		switch ($test[0]) {
		case "compare":
		    return eval(Number($pintu) + $test[1]);
		    break;
		case "regexp":
		    return new RegExp($test[1], "gi").test($pintu);
		    break;
		case "length":
		    var $length;
		    if (element.attr("type") == "checkbox") {
			$length = element.closest('form').find(
				'input[name="' + element.attr("name")
					+ '"]:checked').length;
		    } else {
			$length = $pintu.replace(/[\u4e00-\u9fa5]/g, "***").length;
		    }
		    return eval($length + $test[1]);
		    break;
		case "ajax":
		    var $getdata;
		    var $url = $test[1] + $pintu;
		    $.ajaxSetup({
			async : false
		    });
		    $.getJSON($url, function(data) {
			$getdata = data.getdata;
		    });
		    if ($getdata == "true") {
			return true;
		    }
		    break;
		case "repeat":
		    return $pintu == jQuery('input[name="' + $test[1] + '"]')
			    .eq(0).val();
		    break;
		default:
		    return true;
		    break;
		}
		break;
	    } else {
		return true;
	    }
	}
    };

    // zhangjie
    // 将form转为AJAX提交
    function ajaxSubmit(frm, fn) {
	var dataPara = getFormJson(frm);
	$.ajax({
	    url : frm.action,
	    type : frm.method,
	    data : dataPara,
	    success : fn
	});
    }
    // zhangjie
    // 将form中的值转换为键值对。
    function getFormJson(frm) {
	var o = {};
	var a = $(frm).serializeArray();
	$.each(a, function() {
	    if (o[this.name] !== undefined) {
		if (!o[this.name].push) {
		    o[this.name] = [ o[this.name] ];
		}
		o[this.name].push(this.value || '');
	    } else {
		o[this.name] = this.value || '';
	    }
	});

	return o;
    }
    /**
     * 允许请求并且不弹窗的请求
     */
    function allow(path) {
	var flag = false;
	var str1 = "prices/goodsSearch,sales/salesManger,guest/guestManger,goods/goodsManger,prices/pricesManger,sparePartsBase/sparePartsBaseManger,saled/saledManger,sparePartsInOut/sparePartsInOut_out,sparePartsInOut/sparePartsInOut_find";
	var str = str1.split(",");
	for (var t = 0; t < str.length; t++) {
	    if (str[t] == path) {
		flag = true;
		break;
	    }
	}
	return flag;
    }

    /**
     * form校验机制 修改 by zhangjie
     */
    $('form')
	    .submit(
		    function() {
			$(this)
				.find(
					'input[data-validate],textarea[data-validate],select[data-validate]')
				.trigger("blur");
			$(this)
				.find(
					'input[placeholder],textarea[placeholder]')
				.each(function() {
				    $hideplaceholder($(this));
				});
			var numError = $(this).find('.check-error').length;
			if (numError) {
			    $(this)
				    .find('.check-error')
				    .first()
				    .find(
					    'input[data-validate],textarea[data-validate],select[data-validate]')
				    .first().focus().select();
			    return false;
			} else {
			    var action = $(this).attr("action");
			    if (action != "login_submit") {
				ajaxSubmit(this, function(data) {
				    if (data.length > 100) {
					if (!allow(action)) {
					    alert("操作成功");
					    $("#admin").html(data);
					} else {
					    $("#admin").html(data);
					}
				    } else {
					alert(data);
				    }
				});
				return false;
			    }
			}
		    });
    $('.form-reset').click(
	    function() {
		$(this).closest('form').find(".input-help").remove();
		$(this).closest('form').find('.form-submit').removeAttr(
			'disabled');
		$(this).closest('form').find('.form-group').removeClass(
			"check-error");
		$(this).closest('form').find('.form-group').removeClass(
			"check-success");
	    });
    $('.tab .tab-nav li').each(function() {
	var e = $(this);
	var trigger = e.closest('.tab').attr("data-toggle");
	if (trigger == "hover") {
	    e.mouseover(function() {
		$showtabs(e);
	    });
	    e.click(function() {
		return false;
	    });
	} else {
	    e.click(function() {
		$showtabs(e);
		return false;
	    });
	}
    });
    $showtabs = function(e) {
	var detail = e.children("a").attr("href");
	e.closest('.tab .tab-nav').find("li").removeClass("active");
	e.closest('.tab').find(".tab-body .tab-panel").removeClass("active");
	e.addClass("active");
	$(detail).addClass("active");
    };
    $('.dialogs').each(function() {
	var e = $(this);
	var trigger = e.attr("data-toggle");
	if (trigger == "hover") {
	    e.mouseover(function() {
		$showdialogs(e);
	    });
	} else if (trigger == "click") {
	    e.click(function() {
		$showdialogs(e);
	    });
	}
    });
    $showdialogs = function(e) {
	var trigger = e.attr("data-toggle");
	var getid = e.attr("data-target");
	var data = e.attr("data-url");
	var mask = e.attr("data-mask");
	var width = e.attr("data-width");
	var detail = "";
	var masklayout = $('<div class="dialog-mask"></div>');
	if (width == null) {
	    width = "80%";
	}

	if (mask == "1") {
	    $("body").append(masklayout);
	}
	detail = '<div class="dialog-win" style="position:fixed;width:' + width
		+ ';z-index:11;">';
	if (getid != null) {
	    detail = detail + $(getid).html();
	}
	if (data != null) {
	    detail = detail + $.ajax({
		url : data,
		async : false
	    }).responseText;
	}
	detail = detail + '</div>';

	var win = $(detail);
	win.find(".dialog").addClass("open");
	$("body").append(win);
	var x = parseInt($(window).width() - win.outerWidth()) / 2;
	var y = parseInt($(window).height() - win.outerHeight()) / 2;
	if (y <= 10) {
	    y = "10"
	}
	win.css({
	    "left" : x,
	    "top" : y
	});
	win.find(".dialog-close,.close").each(function() {
	    $(this).click(function() {
		win.remove();
		$('.dialog-mask').remove();
	    });
	});
	masklayout.click(function() {
	    win.remove();
	    $(this).remove();
	});
    };
    $('.tips').each(function() {
	var e = $(this);
	var title = e.attr("title");
	var trigger = e.attr("data-toggle");
	e.attr("title", "");
	if (trigger == "" || trigger == null) {
	    trigger = "hover";
	}
	if (trigger == "hover") {
	    e.mouseover(function() {
		$showtips(e, title);
	    });
	} else if (trigger == "click") {
	    e.click(function() {
		$showtips(e, title);
	    });
	} else if (trigger == "show") {
	    e.ready(function() {
		$showtips(e, title);
	    });
	}
    });
    $showtips = function(e, title) {
	var trigger = e.attr("data-toggle");
	var place = e.attr("data-place");
	var width = e.attr("data-width");
	var css = e.attr("data-style");
	var image = e.attr("data-image");
	var content = e.attr("content");
	var getid = e.attr("data-target");
	var data = e.attr("data-url");
	var x = 0;
	var y = 0;
	var html = "";
	var detail = "";

	if (image != null) {
	    detail = detail + '<img class="image" src="' + image + '" />';
	}
	if (content != null) {
	    detail = detail + '<p class="tip-body">' + content + '</p>';
	}
	if (getid != null) {
	    detail = detail + $(getid).html();
	}
	if (data != null) {
	    detail = detail + $.ajax({
		url : data,
		async : false
	    }).responseText;
	}
	if (title != null && title != "") {
	    if (detail != null && detail != "") {
		detail = '<p class="tip-title"><strong>' + title
			+ '</strong></p>' + detail;
	    } else {
		detail = '<p class="tip-line">' + title + '</p>';
	    }
	}
	detail = '<div class="tip">' + detail + '</div>';
	html = $(detail);

	$("body").append(html);
	if (width != null) {
	    html.css("width", width);
	}
	if (place == "" || place == null) {
	    place = "top";
	}
	if (place == "left") {
	    x = e.offset().left - html.outerWidth() - 5;
	    y = e.offset().top - html.outerHeight() / 2 + e.outerHeight() / 2;
	} else if (place == "top") {
	    x = e.offset().left - html.outerWidth() / 2 + e.outerWidth() / 2;
	    y = e.offset().top - html.outerHeight() - 5;
	} else if (place == "right") {
	    x = e.offset().left + e.outerWidth() + 5;
	    y = e.offset().top - html.outerHeight() / 2 + e.outerHeight() / 2;
	} else if (place == "bottom") {
	    x = e.offset().left - html.outerWidth() / 2 + e.outerWidth() / 2;
	    y = e.offset().top + e.outerHeight() + 5;
	}
	if (css != "") {
	    html.addClass(css);
	}
	html.css({
	    "left" : x + "px",
	    "top" : y + "px",
	    "position" : "absolute"
	});
	if (trigger == "hover" || trigger == "click" || trigger == null) {
	    e.mouseout(function() {
		html.remove();
		e.attr("title", title)
	    });
	}
    };
    $('.alert .close').each(function() {
	$(this).click(function() {
	    $(this).closest('.alert').remove();
	});
    });
    $('.radio label').each(function() {
	var e = $(this);
	e.click(function() {
	    e.closest('.radio').find("label").removeClass("active");
	    e.addClass("active");
	});
    });
    $('.checkbox label').each(function() {
	var e = $(this);
	e.click(function() {
	    if (e.find('input').is(':checked')) {
		e.addClass("active");
	    } else {
		e.removeClass("active");
	    }
	    ;
	});
    });
    $('.collapse .panel-head').each(function() {
	var e = $(this);
	e.click(function() {
	    e.closest('.collapse').find(".panel").removeClass("active");
	    e.closest('.panel').addClass("active");
	});
    });
    $('.icon-navicon').each(function() {
	var e = $(this);
	var target = e.attr("data-target");
	e.click(function() {
	    $(target).toggleClass("nav-navicon");
	});
    });
    $('.banner')
	    .each(
		    function() {
			var e = $(this);
			var pointer = e.attr("data-pointer");
			var interval = e.attr("data-interval");
			var style = e.attr("data-style");
			var items = e.attr("data-item");
			var items_s = e.attr("data-small");
			var items_m = e.attr("data-middle");
			var items_b = e.attr("data-big");
			var num = e.find(".carousel .item").length;
			var win = $(window).width();
			var i = 1;

			if (interval == null) {
			    interval = 5
			}
			;
			if (items == null || items < 1) {
			    items = 1
			}
			;
			if (items_s != null && win > 760) {
			    items = items_s
			}
			;
			if (items_m != null && win > 1000) {
			    items = items_m
			}
			;
			if (items_b != null && win > 1200) {
			    items = items_b
			}
			;

			var itemWidth = Math.ceil(e.outerWidth() / items);
			var page = Math.ceil(num / items);
			e.find(".carousel .item")
				.css("width", itemWidth + "px");
			e.find(".carousel")
				.css("width", itemWidth * num + "px");

			var carousel = function() {
			    i++;
			    if (i > page) {
				i = 1;
			    }
			    $showbanner(e, i, items, num);
			};
			var play = setInterval(carousel, interval * 600);

			e.mouseover(function() {
			    clearInterval(play);
			});
			e.mouseout(function() {
			    play = setInterval(carousel, interval * 600);
			});

			if (pointer != 0 && page > 1) {
			    var point = '<ul class="pointer"><li value="1" class="active"></li>';
			    for (var j = 1; j < page; j++) {
				point = point + ' <li value="' + (j + 1)
					+ '"></li>';
			    }
			    ;
			    point = point + '</ul>';
			    var pager = $(point);
			    if (style != null) {
				pager.addClass(style);
			    }
			    ;
			    e.append(pager);
			    pager.css("left", e.outerWidth() * 0.5
				    - pager.outerWidth() * 0.5 + "px");
			    pager.find("li").click(function() {
				$showbanner(e, $(this).val(), items, num);
			    });
			    var lefter = $('<div class="pager-prev icon-angle-left"></div>');
			    var righter = $('<div class="pager-next icon-angle-right"></div>');
			    if (style != null) {
				lefter.addClass(style);
				righter.addClass(style);
			    }
			    ;
			    e.append(lefter);
			    e.append(righter);

			    lefter.click(function() {
				i--;
				if (i < 1) {
				    i = page;
				}
				$showbanner(e, i, items, num);
			    });
			    righter.click(function() {
				i++;
				if (i > page) {
				    i = 1;
				}
				$showbanner(e, i, items, num);
			    });
			}
			;
		    });
    $showbanner = function(e, i, items, num) {
	var after = 0, leftx = 0;
	leftx = -Math.ceil(e.outerWidth() / items) * (items) * (i - 1);
	if (i * items > num) {
	    after = i * items - num;
	    leftx = -Math.ceil(e.outerWidth() / items) * (num - items);
	}
	;
	e.find(".carousel").stop(true, true).animate({
	    "left" : leftx + "px"
	}, 800);
	e.find(".pointer li").removeClass("active");
	e.find(".pointer li").eq(i - 1).addClass("active");
    };
    $(".spy a").each(
	    function() {
		var e = $(this);
		var t = e.closest(".spy");
		var target = t.attr("data-target");
		var top = t.attr("data-offset-spy");
		var thistarget = "";
		var thistop = "";
		if (top == null) {
		    top = 0;
		}
		;
		if (target == null) {
		    thistarget = $(window);
		} else {
		    thistarget = $(target);
		}
		;

		thistarget.bind("scroll", function() {
		    if (target == null) {
			thistop = $(e.attr("href")).offset().top
				- $(window).scrollTop() - parseInt(top);
		    } else {
			thistop = $(e.attr("href")).offset().top
				- thistarget.offset().top - parseInt(top);
		    }
		    ;

		    if (thistop < 0) {
			t.find('li').removeClass("active");
			e.parents('li').addClass("active");
		    }
		    ;

		});
	    });
    $(".fixed").each(function() {
	var e = $(this);
	var style = e.attr("data-style");
	var top = e.attr("data-offset-fixed");
	if (top == null) {
	    top = e.offset().top;
	} else {
	    top = e.offset().top - parseInt(top);
	}
	;
	if (style == null) {
	    style = "fixed-top";
	}
	;

	$(window).bind("scroll", function() {
	    var thistop = top - $(window).scrollTop();
	    if (style == "fixed-top" && thistop < 0) {
		e.addClass("fixed-top");
	    } else {
		e.removeClass("fixed-top");
	    }
	    ;

	    var thisbottom = top - $(window).scrollTop() - $(window).height();
	    if (style == "fixed-bottom" && thisbottom > 0) {
		e.addClass("fixed-bottom");
	    } else {
		e.removeClass("fixed-bottom");
	    }
	    ;
	});

    });

})